Technical Field
The present invention relates to network optimization and, more particularly, to the addition and removal of middleboxes from existing network connections.
Description of the Related Art
With the growth in mobile data traffic, network congestion has become a major issue for mobile network operators. In response, vendors have been offering a large number of network appliances, commonly called middleboxes, to alleviate network congestion. Those middleboxes are designed to reduce transmission delays and improve the throughput of wireless users. A middlebox may be, e.g., a proxy or network optimizer. Proxies such as split-TCP split a network connection between a client and server into two transmission control protocol (TCP) connections. This splitting decouples the network congestion and flow controls on the two legs of the connection and has been shown to improve performance, especially when the client-to-proxy segment has a low round-trip time and high packet losses, while the proxy-to-server segment has a high trip time and low packet losses. Network optimizers eliminate redundancy in network flows and thereby reduce the resource utilization between two wide-area network optimizer gateways.
To simplify the configuration and management of users, middleboxes are preferably introduced in the network to operate in a transparent mode, where the middlebox first intercepts a TCP connection setup request from the client and then initiates a new TCP connection from the middlebox to the server. Such approach allows the middlebox to fully intercept and analyze the requests from the users. In addition, since both TCP connections (a) from client to middlebox, and (b) from middlebox to the end-server, have the source and destination IP addresses set to those of the client and end server, the presence of the middlebox is rendered invisible to the users.
However, existing middlebox solutions must be engaged at the beginning of a network connection and, once engaged, cannot be disengaged. As network conditions change, the use of a middlebox may become superfluous or even degrade connection quality. For example, during the retrieval of a large file, a user may move or the conditions of the network may change in such a way that the presence of a middlebox can slow down the connection. Because existing middleboxes are forced to remain in the path, CPU resources at the middlebox are consumed that would be better used in serving other users. Similarly, if conditions change such that a connection could benefit from a middlebox, existing middlebox solutions cannot insert a middlebox in a pre-existing connection.
Because the two connections are independent and have their own sequence numbers, it is not feasible using existing middlebox solutions to add or remove a middlebox. If the middlebox stops processing the packets from the client but simply forwards them to the server, the sequence number will not match the sequence number that is expected by the server. Similarly, if a connection were added to the middlebox in the middle of a transfer, a standard TCP stack would not recognize it and terminate the connection.